#pragma once

// Display
#include <Arduino_GFX_Library.h>
#define GFX_BL -1

// #define TFT_DC                7
// #define TFT_RES               9
// #define TFT_CS             21
// #define TFT_SCK               47

// #define TFT_QSPI_SCK          45
// #define TFT_QSPI_D0           15
// #define TFT_QSPI_D1           16
// #define TFT_QSPI_D2           17
// #define TFT_QSPI_D3           18
Arduino_DataBus *bus = new Arduino_ESP32QSPI(
    21 /* cs */, 45 /* sck */, 15 /* d0 */, 16 /* d1 */, 17 /* d2 */, 18 /* d3 */);
Arduino_RM67162 *gfx = new Arduino_RM67162(bus, 9 /* RST */, 1 /* rotation */, true /* IPS */);

// I2C
#define I2C_SDA 43
#define I2C_SCL 44

// Touchscreen
#define TOUCH_MODULES_CST_SELF
#define TOUCH_MODULE_ADDR CTS816S_SLAVE_ADDRESS
#define TOUCH_SCL I2C_SCL
#define TOUCH_SDA I2C_SDA
// #define TOUCH_RES 40
// #define TOUCH_INT 41

// SD card
#define SD_SCK 40
#define SD_MOSI 41 // CMD
#define SD_MISO 39 // D0
#define SD_D1 -1
#define SD_D2 -1
#define SD_CS 42   // D3

// I2S
#define I2S_MCLK -1
#define I2S_BCLK 47
#define I2S_LRCK 48
#define I2S_DOUT 46
#define I2S_DIN -1

// #define AUDIO_MUTE_PIN 48   // LOW for mute


//  BootBtn/MIC_DATA | IO0 | 顶部按钮1 & 麦克风 I2S Data |
// | ROW1-ROW7 | IO1-IO7 | Q10键盘 ROW1-7 |
// | MIC_CLK | IO8 | 麦克风 I2S CLK Pin |
// | LCD_RST | IO9 | 屏幕 Reset |
// | COL1-COL5 | IO10-IO14 | Q10键盘 COL1-5 |
// | LCD_SIO0 | IO15 | 屏幕 SIO0 |
// | LCD_SI1  | IO16 | 屏幕 SI1 |
// | LCD_SI2  | IO17 | 屏幕 SI2 |
// | LCD_SI3  | IO18 | 屏幕 SI3 |
// | USB D- | IO19 | 连到 USB Type-C |
// | USB D+ | IO20 | 连到 USB Type-C |
// | LCD_CS | IO21 | 屏幕 QSPI: 片选 |
// | N/A | IO33-37 | 内部已占用 |
// | PMIC_IRQ | IO38 | PMIC 中断 |
// | SD_MISO | IO39 | SD MISO |
// | SD_SCLK | IO40 | SD SCLK |
// | SD_MOSI | IO41 | SD MOSI |
// | SD_CS   | IO42 | SD 片选 |
// | I2C_SDA | IO43 | 原来是 U0TXD，现在是 SDA，外部上拉 |
// | I2C_SCL | IO44 | 原来是 U0RXD，现在是 SCL，外部上拉 |
// | LCD_SCLK| IO45 | 屏幕 QSPI: 时钟 |
// | I2S_DIN | IO46 | I2S Data |
// | I2S_BCK | IO47 | I2S BCK  |
// | I2S_LRCK| IO48 | I2S LRCK |